print("------------ 类的实例方法 ------------")
class Person {
    var name = "Felix", age = 18
    
    func sayHi() {
        print("Hi, I'm \(name), I'm \(age) year old;")
    }
}

let xiaowang = Person()
xiaowang.sayHi()

print("------------ 结构体的实例方法 ------------")
// 因为结构体和枚举是值类型, 默认情况下, 值类型属性不能被自身的实例方法修改, 可以使用mutating关键字来表示可以修改属性
struct Point {
    var x = 0.0, y = 0.0
    mutating func moveBy(width: Double, height: Double) {
        x += width
        y += height
    }
}
var point = Point(x: 1.0, y: 1.0)
print(point)
point.x = 2
print(point)
point.moveBy(width: 5, height: 8)
print(point)

// 使用static关键字来注明这是一个静态属性/方法(类属性/方法), 使用class关键字来注明该静态属性/方法(类属性/方法)可以被子类重写
